﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace aula13
{
    public class Propriedade
    {
        public string Nome;
        public virtual decimal Passivo { get { return 0; } }
    }

    public class Accoes : Propriedade
    {
        public int NumeroAccoes;
    }

    public class Casa : Propriedade
    {
        public decimal Hipoteca;
        public override decimal Passivo { get { return Hipoteca; } }

    }


    public class Teste
    {

        public static void Mostrar(Propriedade prop)
        {
            System.Console.WriteLine(prop.Nome);
        }

        public static void Main()
        {
            Accoes ctt = new Accoes
            {
                Nome = "CTT",
                NumeroAccoes = 1000
                


            };

            Casa mansao = new Casa
            {
                Nome = "Mansao",
                Hipoteca = 10000
            };

            Mostrar(ctt); Mostrar(mansao);

            Console.WriteLine(ctt.Nome);
            Console.WriteLine(ctt.NumeroAccoes);

            Accoes cttt = new Accoes();
            //upcastig
            Propriedade p = cttt;
            //downcasting 
            Accoes a = (Accoes)p;
            if (p is Accoes)
                ((Accoes)p).NumeroAccoes = 1000;
           

            Console.ReadLine();
        }
    }

    public class ClassBase
    {
        public int X;
        public ClassBase() { }
        public ClassBase(int x) { this.X = x; }
    }

    public class SubClass : ClassBase
    {
        public SubClass(int x) : base(x) { }
    }

}
